/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamankelompokkegiatan;

import org.sadhar.sia.framework.ClassApplicationModule;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zul.Button;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.Listcell;
import org.zkoss.zul.Listitem;
import org.zkoss.zul.Messagebox;
import org.zkoss.zul.Space;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Toolbarbutton;

/**
 *
 * @author hendro
 */
public class PerekamanKelompokKegiatanWnd extends ClassApplicationModule {

    private Textbox txtboxKelompokKegiatan;
    private Textbox txtboxKodeKelompokKegiatan;
    private Button btnSimpan;
    private Button btnBatal;
    private PerekamanKelompokKegiatanDAO kelompokDAO;
    private Listbox lstboxKelompokKegiatan;

    public PerekamanKelompokKegiatanWnd() {
        kelompokDAO = new PerekamanKelompokKegiatanDAOImpl();
    }

    public void onCreate() throws Exception {
        txtboxKelompokKegiatan = (Textbox) getFellow("txtboxKelompokKegiatan");
        txtboxKodeKelompokKegiatan = (Textbox) getFellow("txtboxKodeKelompokKegiatan");
        btnSimpan = (Button) getFellow("btnSimpan");
        btnBatal = (Button) getFellow("btnBatal");
        lstboxKelompokKegiatan = (Listbox) getFellow("lstboxKelompokKegiatan");
        clear();
        load();
    }

    public void clear() {
        txtboxKelompokKegiatan.setValue("");
        txtboxKodeKelompokKegiatan.setValue("");
    }

    public void lstboxKelompokKegiatanOnSelect() throws Exception {
        inActiveComponent(true);
        PerekamanKelompokKegiatan kelompok = (PerekamanKelompokKegiatan)lstboxKelompokKegiatan.getSelectedItem().getValue();
        txtboxKodeKelompokKegiatan.setValue(kelompok.getKodeKelompok() + "");
        txtboxKelompokKegiatan.setValue(kelompok.getKelompokKegiatan());
    }

    public void inActiveComponent(boolean value){
        txtboxKodeKelompokKegiatan.setDisabled(value);
        txtboxKelompokKegiatan.setDisabled(value);
    }

    public void load() throws Exception {
        lstboxKelompokKegiatan.getItems().clear();
        int i = 0;
        int no = 1;
        for (final PerekamanKelompokKegiatan kelompok : kelompokDAO.list()) {
            Listitem item = new Listitem();
            item.setValue(kelompok);
            item.appendChild(new Listcell(String.valueOf(no++)));
            item.appendChild(new Listcell(kelompok.getKelompokKegiatan()));
            Listcell cellAksi = new Listcell();

            Toolbarbutton btnUbah = new Toolbarbutton();
            btnUbah.setLabel("[ubah]");
            btnUbah.setId("btnUbah" + (i++));
            btnUbah.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    inActiveComponent(false);
                    txtboxKodeKelompokKegiatan.setValue(kelompok.getKodeKelompok() + "");
                    txtboxKelompokKegiatan.setValue(kelompok.getKelompokKegiatan());
                }
            });

            final Toolbarbutton btnHapus = new Toolbarbutton();
            btnHapus.setLabel("[hapus]");
            btnHapus.setId("btnHapus" + (i++));
            btnHapus.addEventListener("onClick", new EventListener() {

                public void onEvent(Event arg0) throws Exception {
                    if (Messagebox.show("Apakah data Kelompok Kegiatan: " + kelompok.getKelompokKegiatan() + " akan dihapus?", "Konfirmasi", Messagebox.YES | Messagebox.NO, null) == Messagebox.YES) {
                        try {
                            kelompokDAO.delete(kelompok);
                        } catch (Exception ex) {
                            Messagebox.show("Gagal menghapus data: " + ex.getMessage());
                        }
                        btnHapus.addForward(null, btnBatal, "onClick");
                    }
                }
            });
            cellAksi.appendChild(btnUbah);
            cellAksi.appendChild(new Space());
            cellAksi.appendChild(btnHapus);
            item.appendChild(cellAksi);
            lstboxKelompokKegiatan.appendChild(item);
        }
    }

    public void btnBatalOnClick() throws Exception {
        clear();
        load();
        inActiveComponent(false);
    }

    public void btnSimpanOnClick() throws Exception {
        if (txtboxKelompokKegiatan.getValue().trim().equalsIgnoreCase("")) {
            Messagebox.show("Silahkan masukan Kelompok Kegiatan", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
            txtboxKelompokKegiatan.setFocus(true);
            return;
        }

        PerekamanKelompokKegiatan kelompok = new PerekamanKelompokKegiatan();
        kelompok.setKelompokKegiatan(txtboxKelompokKegiatan.getValue());

        if (txtboxKodeKelompokKegiatan.getValue().isEmpty()) {
            //new
            if (kelompokDAO.select(kelompok.getKelompokKegiatan()).size() <= 0) {
                try {
                    kelompokDAO.insert(kelompok);
                    clear();
                    load();
                } catch (Exception ex) {
                    Messagebox.show("Gagal menyimpan data: " + ex.getMessage(), "Pesan Kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            } else {
                Messagebox.show("Kelompok Kegiatan: " + kelompok.getKelompokKegiatan() + " sudah ada, silahkan masukan data yang lain", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
                return;
            }

        } else {
            //update
            kelompok.setKodeKelompok(Integer.valueOf(txtboxKodeKelompokKegiatan.getValue()));
            if (kelompokDAO.select(kelompok.getKodeKelompok(), kelompok.getKelompokKegiatan()).size() <= 0) {
                try {
                    kelompokDAO.update(kelompok);
                    clear();
                    load();
                } catch (Exception ex) {
                    Messagebox.show("Gagal menyimpan data: " + ex.getMessage(), "Pesan Kesalahan", Messagebox.OK, Messagebox.ERROR);
                }
            } else {
                Messagebox.show("Kelompok Kegiatan: " + kelompok.getKelompokKegiatan() + " sudah ada, silahkan masukan data yang lain", "Pesan Informasi", Messagebox.OK, Messagebox.INFORMATION);
                return;
            }
        }

    }
}

